clear; clc; close all;

% 参数设置
u_values = linspace(0, 12, 1200);   % u 在 [0,12] 范围内取 1200 个点
N_iter   = 1000;                    % 总迭代步数
N_last   = 200;                     % 仅取最后 200 步用于绘制分岔图
x0       = 0.1;                     % 初始值

% 计算预留
LE_values = zeros(1, length(u_values));

% 子图: 分岔图
subplot(1,2,1);
hold on;
for i = 1:length(u_values)
    u = u_values(i);
    % 调用 enhanced 函数得到迭代值 x 和对应导数 d
    [x, ~] = enhanced(u, x0, N_iter);
    % 绘制最后 N_last 步的 x 值
    plot(u * ones(1, N_last), x(end-N_last+1:end), '.r', 'MarkerSize', 1);
end
xlabel('u');
ylabel('x');
title('分岔图');
box on;
grid on;
hold off;

% 子图: 李雅普诺夫指数
subplot(1,2,2);
for i = 1:length(u_values)
    u = u_values(i);
    % 调用 enhanced 函数计算迭代值及对应导数
    [x, d] = enhanced(u, x0, N_iter);
    % 为了计算 LE，我们取最后 N_last 步（去除初期瞬态）
    % 计算绝对值的自然对数后求平均
    LE_values(i) = mean(log(abs(d(end-N_last+1:end)) + 1e-15));
end
plot(u_values, LE_values, 'b-', 'LineWidth', 1.5);
hold on;
% 添加 y=0 参考线
yline(0, '--k', 'LineWidth', 1.0);
xlabel('u');
ylabel('LEs');
title('LEs指数');
box on;
grid on;
hold off;
